package gestorHotel;

import gestorHotel.habitacion.*;
import gestorHotel.reserva.*;
import gestorHotel.servicios.*;
import uiMain.menuconsola.*;

import java.util.*;

public class Hotel {
	private String nombre;
	private String direccion;
	private String poblacion;
	private String provincia;
	private String pais;
	private int numEstrellas;
	private HashMap<Integer, Habitacion> habitaciones;
	private HashMap<String, Tipo> tipos;
	private HashMap<String, Categoria> categorias;
	private HashMap<String, ServicioComunicacion> servicios;
	private HashMap<String, Bebida> bebidas;
	private HashMap<Integer, Reserva> reservas;
	private RestriccionReserva restriccion;
	private ArrayList<PenalizacionCancelacion> penalizaciones;
	
	
	public Hotel() {
		this.nombre = null;
		this.direccion = null;
		this.poblacion = null;
		this.provincia = null;
		this.pais = null;
		this.numEstrellas = 0;
		this.penalizaciones = new ArrayList<PenalizacionCancelacion>();
		this.restriccion = null;
		this.servicios = new HashMap<String, ServicioComunicacion>();
		this.bebidas = new HashMap<String, Bebida>();
		this.habitaciones = new HashMap<Integer, Habitacion>();
		this.reservas = new HashMap<Integer, Reserva>();
		this.tipos = new HashMap<String, Tipo>();
		this.categorias = new HashMap<String, Categoria>();
	}
	
	public Hotel(String nombre, String direccion, String poblacion,
			String provincia, String pais, int numEstrellas,
			ArrayList<PenalizacionCancelacion> penalizaciones,
			RestriccionReserva restriccion,
			HashMap<String, ServicioComunicacion> servicios,
			HashMap<String, Bebida> bebidas, HashMap<Integer, Habitacion> habitaciones,
			HashMap<Integer, Reserva> reservas, HashMap<String, Tipo> tipos,
			HashMap<String, Categoria> categorias) {
		this.nombre = nombre;
		this.direccion = direccion;
		this.poblacion = poblacion;
		this.provincia = provincia;
		this.pais = pais;
		this.numEstrellas = numEstrellas;
		this.penalizaciones = penalizaciones;
		this.restriccion = restriccion;
		this.servicios = servicios;
		this.bebidas = bebidas;
		this.habitaciones = habitaciones;
		this.reservas = reservas;
		this.tipos = tipos;
		this.categorias = categorias;
	}
	
	public String getNombre() {
		return this.nombre;
	}
	
	public String getDireccion() {
		return this.direccion;
	}
	
	public String getPoblacion() {
		return this.poblacion;
	}
	
	public String getProvincia() {
		return this.provincia;
	}
	
	public String getPais() {
		return this.pais;
	}
	
	public int getNumEstrellas() {
		return this.numEstrellas;
	}
	
	public ArrayList<PenalizacionCancelacion> getPenalizaciones() {
		return this.penalizaciones;
	}
	
	public RestriccionReserva getRestriccion() {
		return restriccion;
	}
	
	public HashMap<String, ServicioComunicacion> getServicios() {
		return servicios;
	}
	
	public HashMap<String, Bebida> getBebidas() {
		return bebidas;
	}
	
	public HashMap<Integer, Habitacion> getHabitaciones() {
		return habitaciones;
	}
	
	public HashMap<Integer, Reserva> getReservas() {
		return reservas;
	}
	
	public HashMap<String, Tipo> getTipos() {
		return tipos;
	}
	
	public HashMap<String, Categoria> getCategorias() {
		return categorias;
	}
	
	public void setNombre(String nombre) {
		this.nombre = nombre;
	}
	
	public void setDireccion(String direccion) {
		this.direccion = direccion;
	}
	
	public void setPoblacion(String poblacion) {
		this.poblacion = poblacion;
	}
	
	public void setProvincia(String provincia) {
		this.provincia = provincia;
	}
	
	public void setPais(String pais) {
		this.pais = pais;
	}
	
	public void setNumEstrellas(int numEstrellas) {
		this.numEstrellas = numEstrellas;
	}
	
	public void setPenalizaciones(ArrayList<PenalizacionCancelacion> penalizaciones) {
		this.penalizaciones = penalizaciones;
	}
	
	public void setRestriccion(RestriccionReserva restriccion) {
		this.restriccion = restriccion;
	}

	public void setServicios(HashMap<String, ServicioComunicacion> servicios) {
		this.servicios = servicios;
	}

	public void setBebidas(HashMap<String, Bebida> bebidas) {
		this.bebidas = bebidas;
	}

	public void setHabitaciones(HashMap<Integer, Habitacion> habitaciones) {
		this.habitaciones = habitaciones;
	}

	public void setReservas(HashMap<Integer, Reserva> reservas) {
		this.reservas = reservas;
	}

	public void setTipos(HashMap<String, Tipo> tipos) {
		this.tipos = tipos;
	}

	public void setCategorias(HashMap<String, Categoria> categorias) {
		this.categorias = categorias;
	}
	
	public void listarHabitaciones(Categoria categoria) {
		
	}
	
	public void checkIn(Habitacion habitacion, Reserva reserva) {
		
	}
	
	public void listarReservas() {
		
	}
	
	public void contarHabitaciones(Categoria categoria) {
		
	}
	
	public void crear() {
		if (!Main.hoteles.containsKey(this.nombre))
			Main.hoteles.put(this.nombre, this);
	}
	
	public void eliminar() {
		if (Main.hoteles.containsKey(this.nombre))
			Main.hoteles.remove(this.nombre);
	}
	
	public void editar() {
		if (Main.hoteles.containsKey(this.nombre))
			Main.hoteles.put(this.nombre, this);
	}
	
	public void mostrar() {
		System.out.println();
		System.out.println("Nombre: " + this.getNombre());
		System.out.println("Dirección: " + this.getDireccion());
		System.out.println("Poblacion: " + this.getPoblacion());
		System.out.println("Provincia: " + this.getProvincia());
		System.out.println("País: " + this.getPais());
		System.out.println("Estrellas: " + this.getNumEstrellas());
	}
}
